﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Sinacor.Infra.Service.Security.Authorization
{
    /// <summary>
    /// Classe que representa os tipos de claims do Sinacor
    /// </summary>
    public class SinacorClaimTypes
    {
        /// <summary>
        /// ClaimSets de Identificação
        /// </summary>
        public class Identity
        {
            /// <summary>
            /// ClaimSet de id do usuário
            /// </summary>
            public static string UserId = "http://www.bovespa.com.br/sinacor/identity/userid";

            /// <summary>
            /// ClaimSet de identificação do login do usuário
            /// </summary>
            public static string LoginName = "http://www.bovespa.com.br/sinacor/identity/loginname";

            /// <summary>
            /// ClaimSet de identificação do password cifrado do usuário
            /// </summary>
            public static string Password = "http://www.bovespa.com.br/sinacor/identity/password";

            /// <summary>
            /// ClaimSet do id do Token
            /// </summary>
            public static string TokenId = "http://www.bovespa.com.br/sinacor/identity/tokenid";

            /// <summary>
            /// ClaimSet do id da empresa 
            /// </summary>
            public static string CompanyId = "http://www.bovespa.com.br/sinacor/identity/companyId";

            /// <summary>
            /// ClaimSet do id da sessão
            /// </summary>
            public static string SessionId = "http://www.bovespa.com.br/sinacor/identity/sessionId";

            /// <summary>
            /// ClaimSet do tipo da sessão
            /// </summary>
            public static string SessionExpires = "http://www.bovespa.com.br/sinacor/identity/sessionExpires";

            /// <summary>
            /// ClaimSets de Identificação do Client Host
            /// </summary>
            public class ClientHost
            {

                /// <summary>
                /// ClaimSet do Ip do usuário
                /// </summary>
                public static string Ip = "http://www.bovespa.com.br/sinacor/identity/ClientHost/Ip";

                /// <summary>
                /// ClaimSet do Name do usuário
                /// </summary>
                public static string Name = "http://www.bovespa.com.br/sinacor/identity/ClientHost/Name";
            }
        }

        /// <summary>
        /// ClaimSets de Autorização
        /// </summary>
        public class Authorization
        {
            /// <summary>
            /// ClaimSet de Autorização de recursos do sistema
            /// </summary>
            public static string System = "http://www.bovespa.com.br/sinacor/authorization/system";
            /// <summary>
            /// ClaimSet de autorização de recursos de Negócio do sistema
            /// </summary>
            public static string Business = "http://www.bovespa.com.br/sinacor/authorization/business";
            /// <summary>
            /// ClaimSet de autorização de funções ao sistema
            /// </summary>
            public static string Function = "http://www.bovespa.com.br/sinacor/authorization/function";
        }

        /// <summary>
        /// Tipos de Operação
        /// </summary>
        public class OperationType
        {
            /// <summary>
            /// Tipo de Operação que efetua somente criação
            /// </summary>
            public static string Create = "C";
            /// <summary>
            /// Tipo de Operação que efetua somente atualização
            /// </summary>
            public static string Update = "U";
            /// <summary>
            /// Tipo de Operação que efetua somente consulta
            /// </summary>
            public static string Read = "R";
            /// <summary>
            /// Tipo de Operação que efetua somente exclusão
            /// </summary>
            public static string Delete = "D";
            /// <summary>
            /// Tipo de Operação que efetua somente execução
            /// </summary>
            public static string Execute = "E";
        }
    }
}
